Methods and Apparatuses for Circuit Simulation

ABSTRACT

In one embodiment, a method comprising identifying a sub-network of the linear circuit, the sub-network having one or more internal nodes, one or more interface nodes, and branches connecting the one or more internal nodes and the one or more interface nodes, the sub-network having at least one of a capacitor and an inductor, is described. The method in one embodiment comprises determining a linear equation system for transient simulation of the linear circuit, the linear equation system containing no variable representing the one or more internal nodes.

The application is a divisional of U.S. application Ser. No. 10/993,760, filed on Nov. 19, 2004, which is now U.S. Pat. No. 8,065,129, to issue on Nov. 22, 2011.

FIELD OF THE TECHNOLOGY

The invention relates to circuit simulation, and more particularly to the transient simulations of linear circuits.

BACKGROUND

A general resistive, capacitive and inductive network can be analyzed by using the circuit laws known as Kirchoff's current law (KCL) and Kirchoff's voltage law (KVL) to generate sets of coupled differential equations. A common method to generate these equations is called Modified Nodal Analysis (MNA). Other methods such as the Sparse Tableau Method may also be used to create equivalent systems of equations (see, e.g., T. L. Pillage, R. A. Rohrer and C. Visweswariah, “Electronic Circuit and System Simulation Methods”, McGraw Hill, 1995).

Many methods, such as backward Euler, trapezoidal rule, etc. can be used to discretize the differential equations for transient simulation. The discretized differential equations represent the relation between the voltages and/or currents in the circuit at two or more time instances. Thus, from the known voltages and/or currents at one or more times instances, the voltages and/or currents at another time instance can be obtained. The differential equations are typically discretized in time to produce a matrix equation for a time step. Typically, the matrix equation for a linear circuit with inductors represents a linear equation system whose unknown is the vector of voltages and currents in the circuit at a time step. The known vector of the matrix equation (e.g., the right hand side of the equations of the linear equation system) typically depends on previous known time step results and/or known input stimuli.

SUMMARY OF THE DESCRIPTION

Methods and apparatuses for transient simulation of circuits are described herein. Some of the embodiments of the present invention are summarized in this section.

One embodiment of the present invention eliminates the inductive branch current variables in terms of node voltage variables to generate a linear equation system with a sparse, symmetric and positive definite matrix, which can be solved efficiently using a pre-conditioned conjugate gradient method. The known vector of the linear equation system includes the contribution from the known inductive branch currents at a previous time instance. In one embodiment of the present invention, a node on a branch to a known voltage, such as ground, and on two resistive branches are identified and eliminated to form the linear equation system with a reduced dimension. In one embodiment of the present invention, multiple time step sizes are selectively used to balance the accuracy in transient simulation and efficiency.

In one aspect of the present invention, a method of transient simulation of a linear circuit, includes: determining a third node of a linear circuit, the third node shared by a first resistive branch, a second resistive branch and a third branch, the first resistive branch connecting the third node to a first node, the second resistive branch connecting the third node to a second node, the third branch connecting the third node to a known voltage; determining a first linear equation system for transient simulation of the linear circuit, the first linear equation system including unknown variables representing the first and second nodes but no unknown variable representing the third node; and determining the unknown variables representing the first and second nodes from the first linear equation system.

In one example of an embodiment, the method further includes: determining a voltage for the third node from the voltages for the first and second nodes; where the unknown variables represent voltages on the first and second nodes.

In one example, the third branch is capacitive; and the known voltage is ground. In another example, the third branch is inductive.

In one example of an embodiment, the first linear transient simulation equation system is symmetric and positive definite; the first linear transient simulation equation system is solved using a conjugate gradient method; and the circuit includes at least one inductive branch.

In one example of an embodiment, the first and second nodes are on the first and second branches respectively.

In one example of an embodiment, the method further includes: determining a second linear equation system for transient simulation of the linear circuit, the second linear equation system including unknown variables for the first, second and third nodes; and eliminating an unknown variable of the third node in terms of the unknown variables of the first and second nodes to generate the first linear equation system.

In one example of an embodiment, a path between the first and second nodes includes a fourth node; the first linear transient simulation equation system includes no unknown variable for the fourth node; and the fourth node is shared by two resistive branches on the path and a branch which connects to a known voltage.

In one aspect of the present invention, a method of transient simulation of a linear circuit, includes: determining a linear equation system for transient simulation of the linear circuit, the linear circuit including at least one inductive branch, the linear transient simulation equation system being symmetric and positive definite; and determining a known vector of the equation system from at least a representation of at least one inductive branch current at a previous time instance to solve for an unknown vector from the linear equation system.

In one example of an embodiment, the linear equation system includes no unknown variable representing an inductive branch current; and the method further includes: determining one or more inductive branch currents from an integration of a representation of voltages calculated from the linear equation system; where the unknown vector representing node voltages at a plurality of nodes of the circuit.

In one example of an embodiment, the method further includes: solving the linear equation system using a conjugate gradient method for the unknown vector from the known vector.

In one example of an embodiment, the representation of at least one inductive branch current includes an integration of a representation of voltage solutions at a number of time instances.

In one aspect of the present invention, a method of transient simulation of a linear circuit, includes: determining a plurality of matrices of linear equation systems for transient simulation of the linear circuit at a plurality of time step sizes respectively; selecting a first time step size from the plurality of time step sizes for a first simulation step in time; determining a representation of voltages for the linear circuit for the first simulation step using a first one of the plurality of matrices corresponding to the first time step size; selecting a second time step size from the plurality of time step sizes for a second simulation step in time; and determining a representation of voltages for the linear circuit for the second simulation step using a second one of the plurality of matrices corresponding to the second time step size; where the first time step size is different from the second time step size.

In one example of an embodiment, the plurality of matrices are symmetric and positive definite; the first and second time step sizes are selected according to changes in a representation of changes in load currents.

In one example of an embodiment, the first time step size is larger than the second time step size when no load current change is larger than a threshold; the first time step size is smaller than the second time step size when a load input current change is larger than a threshold.

In one example of an embodiment, the representation of changes in load currents includes changes to known vectors of the linear equation systems over time.

The present invention includes methods and apparatuses which perform these methods, including data processing systems which perform these methods, and computer readable media which when executed on data processing systems cause the systems to perform these methods.

Other features of the present invention will be apparent from the accompanying drawings and from the detailed description which follows.

BRIEF DESCRIPTION OF THE DRAWINGS

The present invention is illustrated by way of example and not limitation in the figures of the accompanying drawings in which like references indicate similar elements.

FIG. 1 illustrates a method to reduce a node according to one embodiment of the present invention.

FIG. 2 illustrates a method to reduce a string of nodes according to one embodiment of the present invention.

FIG. 3 illustrates a method to reduce a network of nodes according to one embodiment of the present invention.

FIGS. 4-7 shows flow charts of methods for transient simulation of a linear circuit according to some embodiments of the present invention.

FIG. 8 shows a block diagram example of a data processing system which may be used with the present invention.

DETAILED DESCRIPTION

The following description and drawings are illustrative of the invention and are not to be construed as limiting the invention. Numerous specific details are described to provide a thorough understanding of the present invention. However, in certain instances, well known or conventional details are not described in order to avoid obscuring the description of the present invention. References to one or an embodiment in the present disclosure are not necessarily references to the same embodiment; and, such references mean at least one.

At least one embodiment of the present invention includes methods for efficient simulation of a circuit, such as large linear circuit networks which typically include resistive, capacitive and inductive elements. Fast solution methods according to embodiments of the present invention can be used in many different analysis and optimization problems, such as power mesh analysis of a design of an Integrated Circuit (IC) chip. The methods can also be used for the transient analysis of a general network including resistors, inductors, and capacitors.

One example of a general linear network including resistors, inductors and capacitors is a power supply grid of an integrated circuit. Interconnect and power supply networks both on and off-chip are represented as networks of resistors (R), inductors (L), and capacitors (C), or RLC networks. Certain types of RLC networks can be particularly large. For example, the power mesh of a chip can contain millions of R, L, and C elements and nodes, which represent individual connections to each gate. Similarly the network used to represent the substrate of a semiconductor chip may contain millions of elements as the network represents the whole chip and provide details down to individual components or gates.

To simulate the behavior of such a network, time varying voltage sources and/or current sources can be applied to certain nodes to observe the behavior of all the remaining nodes and branches over the time period of interest, such as a clock cycle. Transient simulation is usually performed through discretizing the time period over which the simulation is performed into a number of time steps. The solution at the previous time instance is used to calculate the solution at the current time instance. Thus, the transient simulation is advanced one time step a time over the time period of interest based on the solution at the previous time instance.

For a time step, modified nodal analysis (MNA) typically provides a matrix equation system of the form M x=y, where M is a sparse matrix, x is the vector of unknown node voltages and inductor currents and y is a known vector which may depend on the solution of the previous time instance. When M is symmetric and positive definite, the equation system M x=y is symmetric and positive definite; otherwise, the equation system M x=y is not symmetric and positive definite. All the eigenvalues of a symmetric and positive definite matrix are real and positive. In the presence of inductors, M is not symmetric and positive definite; and the equation system for the transient simulation is not symmetric and positive definite.

When only resistors and capacitors are present in the circuit, the matrices produced by Modified Nodal Analysis (MNA) is symmetric and positive definite. When inductors are present in the circuit, the matrix produced by MNA (or other techniques) is typically not symmetric and positive definite. If self-inductances are included in the network, the unknown x of the equation system of MNA includes not only node (or capacitor) voltages but also inductor currents; and the matrix M generated by MNA is not symmetric and positive definite. Thus, when inductors are present in the circuit, the matrix equation of a traditional method is solved by general sparse matrix techniques. Typically, Gaussian elimination is used, which limits the size of the problem that can be solved for a given computer memory size and limits the efficiency of transient simulation of circuits with inductors.

In one embodiment of the present invention, a sparse matrix M that is symmetric and positive definite is generated for the transient simulation, even when inductive elements are present. Thus, efficient methods for solving a symmetric and positive definite sparse equation system can then be used to solve the matrix equation for the transient simulation of the circuit with inductive elements. For example, pre-conditioned conjugate gradient methods can be used when the matrix equation is symmetric and positive definite. Since all the eigenvalues of a symmetric and positive definite matrix are real and positive, a class of fast iterative solution techniques, such as conjugate gradient methods, can be applied to solve the matrix equation if the matrix is symmetric and positive definite. The property of sparse, symmetric and positive definite of the matrix allows the use of efficient matrix reduction techniques, such as pre-conditioned conjugate gradient methods, for fast transient simulations of large linear circuit networks of resistive, capacitive and inductive elements.

Many references describe methods to solve large linear circuit problems by MNA techniques or other methods. Typically, these traditional methods utilize both the node voltages and inductor currents as state variables which lead to a matrix which is not symmetric and positive definite and therefore cannot be solved by conjugate gradient methods. See, for example, T. L. Pillage, R. A. Rohrer and C. Visweswariah, “Electronic Circuit and System Simulation Methods”, McGraw Hill, 1995.

In one embodiment of the present invention, a sparse, symmetric and positive definite matrix equation system is generated for circuits with inductors. Thus, any techniques for solving a sparse, symmetric and positive definite matrix equation system, such as pre-conditioned conjugate gradient methods, can be used in the transient simulation of circuits with inductors.

If the matrix M is symmetric and positive definite, special techniques to solve the M x=y equation exist. These techniques such as the conjugate gradient method can be very fast and do not require as much memory as methods such as Gaussian elimination that work on general matrices. More details of the conjugate gradient methods may be found in G. H. Golub, C. F. Van Loan, “Matrix Computations”, Johns Hopkins University Press, 1983; J. W. Demmel, “Applied Numerical Linear Algebra”, Society for Industrial and Applied Mathematics (SIAM), 1997, etc.

In general a conjugate gradient method offers the advantage of being faster than direct methods such as Gaussian elimination in solving sparse matrices. Further, a conjugate gradient method requires significantly less memory than Gaussian elimination. During the process of Gaussian elimination a large number of 0 entries in the original sparse matrix become non-zero which requires additional storage. This can lead to significantly larger memory requirements than an iterative method, such as a conjugate gradient method, which does not require the creation of matrices any larger than the original sparse matrix.

One embodiment of the present invention formulates the problem in such a way that even with inductances present, the matrix that is created is symmetric and positive definite. This allows the conjugate gradient method to be applied to the problem with inductors thus reducing the runtime and memory requirements.

In one embodiment of the present invention, the equations for the RLC network is written as two coupled vector differential equations for the node voltages and the inductor currents. The equation for the node voltages vector is discretized in time (e.g., using the Trapezoidal rule) to generate a sparse matrix equation for each time step. The equation for the inductor currents is integrated in time to write the inductor current at the current time instance as a function of the inductor current at the previous time instance and node voltages. The inductor current equation is then substituted in the equation for the node voltages, thus eliminating the inductor current as a variable. This leads to the creation of a symmetric and positive definite matrix that can be solved using the fast methods such as conjugate gradients.

In general, an RLC network can be represented as a directed graph. A branch of the directed graph has an element connecting two nodes. A branch can have a resistor, a capacitor, an inductor, or a current source. Thus, the branches of the graph can be partitioned into resistive branches, capacitive branches, inductive branches and current source branches. An adjacent matrix A can be defined for the directed graph such that an element A_(ij) is: 1 if node j is the source of branch i; 0 if node j is the sink of branch i; and 0 if otherwise. The vector of node voltages can be represented as V_(n); the vector of branch voltages can be represented as Y_(b); and the vector of branch currents can be represented as I_(b).

Kirchoff's current law (KCL) can be written as:

A ^(T) I _(n)=0

Kirchoff's voltage law (KVL) can be written as:

AV _(n) =V _(b)

To partition the branches according to the types, the branch currents can be represented as:

I _(g) ^(T) ={I _(i) ^(T) ,I _(g) ^(T) ,I _(c) ^(T) ,I ₁ ^(T)}

where I_(i), I_(g), I_(c) and I₁ are the vectors of branch currents for current source branches, resistive branches, capacitive branches, and inductive branches respectively.

Similarly, the branch voltage can be represented as:

V _(b) ^(T) ={V _(i) ^(T) ,V _(g) ^(T) ,V _(c) ^(T) ,V ₁ ^(T)}

where V_(i), V_(g), V_(c) and V₁ are the vectors of branch voltanges for current source branches, resistive branches, capacitive branches, and inductive branches respectively.

Similarly, the adjacent matrix A can be partitioned as:

A ^(T) ={A _(i) ^(T) ,A _(g) ^(T) ,A _(c) ^(T) ,A ₁ ^(T)}

where A_(i), A_(g), A_(c) and A₁ are for the current source branches, resistive branches, capacitive branches, and inductive branches respectively.

Thus, when the branches are partitioned into current source branches, resistive branches, capacitive branches, and inductive branches, Kirchoff's voltage law (KVL) can be written as:

V _(i) =A _(i) V _(n) , V _(g) =A _(g) V _(n) , V _(c) =A _(c) V _(n), and V ₁ =A ₁ V _(n)

Kirchoff's current law (KCL) can be represented as:

A _(i) ^(T) I _(i) +A _(g) ^(T) I _(g) +A _(c) ^(T) I _(c) +A ₁ ^(T) I ₁=0

The relationship between the branch currents and branch voltages for the resistive branches is:

I _(g) =GV _(g) =GA _(g) V _(n)

where G is a diagonal matrix. The relationship between the branch currents and branch voltages for the capacitive branches is:

$I_{c} = {{C\frac{V_{c}}{t}} = {{CA}_{c}\frac{V_{n}}{t}}}$

where C is a diagonal matrix. The relationship between the branch currents and branch voltages for the inductive branches is:

$V_{1} = {{L\frac{I_{1}}{t}} = {A_{1}V_{n}}}$

where L is a symmetric and positive definite matrix. In the absence of mutual inductances, L is a diagonal matrix.

Eliminating the branch currents I_(g) and I_(c) for the resistive branches and the capacitive branches in terms of the node voltages leads to the following form of Kirchoff's current law (KCL).

${{A_{i}^{T}I_{i}} + {A_{g}^{T}{GA}_{g}V_{n}} + {A_{c}^{T}{CA}_{c}\frac{V_{n}}{t}} + {A_{1}^{T}I_{1}}} = 0$

which can be combined with the relationship between the branch currents and node voltages for the inductive branches to form an equation system in the form of:

${{G_{x}X_{x}} + {C_{x}\frac{X_{x}}{t}}} = B_{x}$

where X_(x) ^(T)={V_(n), I₁}; G_(x)={{A_(g) ^(T) G A_(g) V_(n), A₁ ^(T)}, {A₁ ^(T), 0}}; C_(x)={{A_(c) ^(T) C A_(c), 0}, {0, −L}}; and B_(x) ^(T)={−A_(i) ^(T) I_(i), 0}. A typically traditional method based on Modified Nodal Analysis uses both V_(n) and I₁ as the unknown variable vector X_(x) in solving the differential equations for transient simulation. In the presence of inductive branches, the traditional approach of using the both V_(n) and I₁ as the unknown variable leads to an equation system with a matrix that is not symmetric and positive definite.

In one embodiment of the present invention, the unknown inductive branch currents I₁ are represented as in terms of node voltages V_(n) and known quantities. Thus, the unknown inductive branch currents I₁ in the Kirchoff's current law (KCL) can then be replaced in terms of an expression of node voltages V_(n).

For example, in one embodiment, the relationship between the branch currents and node voltages for the inductive branches is integrated using a Trapezoidal rule for a time step of transient simulation.

(I ₁ ^(t+Δ) −I ₁ ^(t))=ΔL ⁻¹ A ₁(V _(n) ^(t+Δ) +V _(n) ^(t))/2

Thus, I₁ ^(t+Δ) can be represented as:

I ₁ ^(t+Δ) =ΔL ⁻¹ A ₁(V _(n) ^(t+Δ) +V _(n) ^(t))/2+I ₁ ^(t)

where V_(n) ^(t) and I₁ ^(t) are known quantities at the time instance t for the determination the unknowns V_(n) ^(t+Δ) and I₁ ^(t+Δ) at the time instance t+Δ, where Δ is the time step size. This relationship can be used in the Kirchoff's current law (KCL) to eliminate the unknown I₁ ^(t+Δ).

For example, Kirchoff's current law (KCL) can be discretized using a Trapezoidal rule as:

A_(i) ^(T)(I_(i) ^(T+Δ)+I_(i) ^(t))/2+A_(g) ^(T)GA_(g)(V_(n) ^(t+Δ)+V_(n) ^(t))/2+A₁ ^(T)(I₁ ^(tΔ)+I₁ ^(t))/2+A_(c) ^(T)CA_(c)(V_(n) ^(t+Δ)−V_(n) ^(t)/Δ=0

When I₁ ^(t+Δ) is replaced with the expression in terms of V_(n) ^(t+Δ) in the discretized Kirchoff's current law (KCL),

A_(i) ^(T)(I_(i) ^(t+Δ)+I_(i) ^(t))/2+A_(g) ^(T)GA_(g)(V_(n) ^(t+Δ)+V_(n) ^(t))/2+A₁ ^(T)(ΔL⁻¹A₁(V_(n) ^(t+Δ)+V_(n) ^(t))/2+2I₁ ^(t))/2+A_(c) ^(T)CA_(c)(V_(n) ^(t+Δ)−V_(n) ^(t))/Δ=0

which can be rearranged as:

(A _(g) ^(T) GA _(g) +ΔA ₁ ^(T) L ⁻¹ A ₁/2+2A _(c) ^(T) CA _(c)/Δ)V _(n) ^(t+Δ) =−A _(i) ^(T)(I _(i) ^(t+Δ) +I _(i) ^(t))+2A _(c) ^(T) CA _(c) /Δ−A _(g) ^(T) GA _(g) −ΔA ₁ ^(T) L ⁻¹ A ₁/2)V _(n) ^(t)−2A ₁ ^(T) I ₁ ^(t)

or

A _(n) V _(n) ^(t+Δ) =B _(n)

where A_(n)=A_(g) ^(T) G A_(g)+ΔA₁ ^(T) L⁻¹ A₁/2+2 A_(c) ^(T) C A_(c)/Δ; and B_(n)=−A_(i) ^(T) (I_(i) ^(t+Δ)+I_(i) ^(t))+(2 A_(c) ^(T) C A_(c)/Δ−A_(g) ^(T) G A_(g)−ΔA₁ ^(T) L⁻¹ A₁/2) V_(n) ^(t)−2 A₁ ^(T) I₁ ^(t).

Since the matrix A_(n) is symmetric and positive definite, V_(n) ^(t+Δ) can be solved for using a pre-conditioned conjugate gradient method.

Note that I₁ ^(t+Δ) can also be integrated from time t₀ based on the node voltage solutions of previous time instances t, t_(n−1), t_(n−2), . . . , t₀. For example, using a trapezoidal rule,

(I ₁ ^(t+Δ) −I ₁ ⁰)=L ⁻¹ A ₁[Δ(V _(n) ^(t+Δ) +V _(n) ^(t))/2+(t−t _(n−1))(V _(n) ^(t) +V _(n) ^(n−1))/2(t _(n−1) −t _(n−2))(V _(n) ^(n−1) +V _(n) ^(n−2))/2+ . . . +(t ₁ −t ₀)(V _(n) ¹ +V _(n) ⁰)/2]

where V_(n) ^(n−1), V_(n) ^(n−2), . . . , and V_(n) ⁰ are the previous node voltage solutions for time instances t_(n−1), t_(n−2), . . . , t₀ respectively.

Using the above expression of I₁ ^(t+Δ) integrated from time t₀ in the discretized Kirchoff's current law (KCL) leads to the same symmetric and positive definite matrix A_(n)=A_(g) ^(T) G A_(g)+ΔA₁ ^(T)L⁻¹ A₁/2+2 A_(c) ^(T) C A_(c)/Δ but a different expression for the right hand vector of the equation system. In general, when different time discretization rules (e.g., forward Euler, backward Euler, Trapezoidal, etc.) are used, the matrix A_(n) and the known vector B_(n) may take different forms. However, A_(n) is symmetric positive definite; and B_(n) includes contribution from known inductive currents at previous time instances, such as −2 A₁ ^(T)I₁ ^(t).

Note that I₁ ^(t) can also be integrated from time t₀ based on the node voltage solutions of previous time instances t_(n−1), t_(n−2), . . . , t₀. Thus,

(I ₁ ^(t) −I ₁ ⁰)=L ⁻¹ A ₁[(t−t _(n−1))(V _(n) ^(t) +v _(n) ^(n−1))/2+(t _(n−1) −t _(n−2))(V _(n) ^(n−1) +V _(n) ^(n−2))/2+ . . . +(t ₁ −t ₀)(V _(n) ¹ +V _(n) ⁰)/2]

It is seen that the difference between (I₁ ^(t+Δ)−I₁ ⁰) and (I₁ ^(t)−I₁ ⁰) provides

(I ₁ ^(t+Δ) −I ₁ ^(t))=ΔL ⁻¹ A ₁(V _(n) ^(t+Δ) +V _(n) ^(t))/2

Therefore, integrating from time t₀ based on the node voltage solutions of previous time instances t, t_(n−1), t_(n−2), . . . , t₀ is equivalent to using the previous inductive branch currents at the previous time instance t.

In general, the matrix of the equation system, such as A_(n)=A_(g) ^(T) G A_(g)+ΔA₁ ^(T) L⁻¹A₁/2+2 A_(c) ^(T) C A_(c)/Δ, is a function of the time step size Δ. When different time step sizes are used, different matrices are evaluated and pre-conditioned. In one embodiment of the present invention, multiple matrices for the solving the node voltages using different time step sizes are computed and stored. When one of the time step sizes is selected as the current time step size, the corresponding matrix is used for solving the node voltage vector.

In one embodiment of the present invention, different time step sizes are used for the transient simulation. In one embodiment, the time step size for the computation of the voltages and currents is selected dynamically. In one embodiment, the time step size is selected to reduce the number of time steps that need to be analyzed without sacrificing accuracy, which translates into fewer solutions of the matrix problem and leads to faster overall runtime.

A common technique to speed up the conjugate gradient method is to use a pre-conditioner to convert the original matrix problem M x=y to a modified one Q M x=Q y. If the pre-conditioner matrix Q has certain properties, it is possible to solve the new system more efficiently then the original system M x=y, including the time required to generate the matrix Q. Further details about the pre-conditioner may be found in J. W. Demmel, “Applied Numerical Linear Algebra”, Society for Industrial and Applied Mathematics (SIAM), 1997.

The matrix M for a transient simulation typically depends on the time step size. If a constant time step size is used for the whole simulation time period, only one M is needed; and therefore only one pre-conditioner Q needs to be generated. The time step size is typically chosen for the accuracy of the simulation—the smaller the time step size the greater the accuracy, but the longer the run time as many time steps are required to simulate a given time period (e.g., a complete clock cycle).

One embodiment of the present invention uses variable time step sizes to retain the high accuracy and reduce the number of time steps. Instead of using a single time step size, a number of different discrete time step sizes are selectively used. For example, a current time step size is selected from a set of time step sizes, such as Δ₁, Δ₂, Δ₃ . . . (e.g., Δ₁<Δ₂<Δ₃ . . . ) can be used. In one example, for simplicity, the time step sizes have the relation Δ₂=2×Δ₁ and Δ₃=2×Δ₂, . . . . However, other ratios can also be used as well.

In one embodiment of the present invention, when the load current or the right hand side of the equation is not changing rapidly, a large time step size is selected to reduce the number of time steps need to cover a time period; when the load current or the right hand side of the equation is changing rapidly, a small time step size is selected to capture the change and provide sufficient accuracy.

In one embodiment, when the condition (I^(k+1)−I^(k))×Δ/C_(max)<θ is satisfied for time step k+1, a large time step size is selected; otherwise, a small time step size is selected. The parameter θ is typically an empirical parameter; and C_(max) is the maximum capacitance at any node.

In one embodiment of the present invention, the time step size is determined adaptively. For example, when the change in the known input stimuli is much smaller than that of the previous time step, a time step size larger than the previous time step size is selected for trial. The result from using the larger time step can be interpolated for comparison with the result from using the previous time step size. If the error is within a tolerant level, the larger time step is used subsequently. Similarly, when the change in the known input stimuli is much larger than that of the previous time step, a smaller time step size is selected for trial. If the interpolation from the result of using previous time step size shows that the previous time step size has an error above a tolerant level, the smaller time step size is used subsequently.

In one embodiment of the present invention, the parameter (e.g., θ) to select a time step size is evaluated during the adaptive process of selecting time steps. The average values can be recorded as the empirical threshold for selecting time steps.

Thus, one embodiment of the present invention limits the error in the solutions, while using significantly fewer number of simulation steps than if only the minimum time step size Δ was used for all the simulation steps for the entire time period.

In one embodiment of the present invention, node reduction is performed to improve the efficiency of the simulation. In one embodiment, for example, a node connecting two resistive branches and a capacitive (or inductive or resistive) branch that is connected to a know voltage (e.g., ground, power, etc.) is eliminated through an expression in terms of the other nodes of the resistive branches.

One embodiment of the present invention reduces the size of the network in the presence of inductors and capacitors without impacting the accuracy of the solution. For the case of networks with only resistors, resistors can be combined to reduce the number of nodes. For example, if resistors are connected in series, the string of resistors can be combined with their values added as an equivalent resistor to eliminate the node in between.

However, when two resistors are connected in series with a capacitor on the common node between them, the two resistors cannot be merged as an equivalent resistor.

One embodiment of the present invention eliminates a common node that connects to two resistors and a third element (e.g., resistor, inductor, capacitor) that connects to a reference voltage, such as ground, power, etc. When the third element is a capacitor or inductor, the node is eliminated through considering the discretization in time. The voltage of the common node can be expressed as the voltage of its immediate neighboring nodes. Thus, voltage variable for the common node is eliminated in such a way that the solution obtained is exactly the same as without elimination. Eliminating the nodes reduces the size of the matrix of the equation system, which translates into faster solution and less memory requirements. In some types of circuit analysis, such as the power grid analysis, such nodes that can be eliminated using methods according embodiments of the present invention arise frequently. For example, many segments of power grid wires can be modeled with nodes that connect to a reference voltage, such as ground (or power), through capacitors and to other nodes through resistors to represent the segments of wires of the power grid. Therefore, reduction of these nodes can significantly reduce the memory usage and runtime.

FIG. 1 illustrates a method to reduce a node according to one embodiment of the present invention. In FIG. 1, a node 203 is on three branches: a first resistive branch with a resistor 211 (R₁), a second resistive branch with a resistor 212 (R₂), and a capacitive branch with a capacitor 213 (C_(g)). In the example of FIG. 1, the capacitive branch is further connected to ground; the first and second resistive branches are further connected to nodes 201 and 202 respectively; and nodes 201 and 202 are further connected to sub-networks 221 and 222 respectively. Sub-networks 221 and 222 may or may not further connect to each other.

The node voltages at nodes 201, 202 and 203 can be denoted as v₁, v₂ and v₃ respectively. The branch currents in branches of the resistor 211, the resistor 212 and the capacitor 213 can be denoted as i₁, i₂ and i₃ respectively. Thus, the relation between the node voltage and the branch currents can be written as:

v₃ − v₁ = R₁i₁ v₃ − v₂ = R₂i₂ ${C_{g}\frac{v_{3}}{t}} = i_{3}$

Kirchoff's current law (KCL) at node 203 can be written as:

i ₁ +i ₂ +i ₃=0

In one embodiment of the present invention, the unknown variables v₃ ^(t+Δ) and i₃ ^(t+Δ) for the transient simulation of the circuit based on the known quantities at the time instance t are expressed in terms of node voltages for the adjacent nodes 201 and 202 so that the node 203 can be eliminated. Thus, a resulting equation system has a reduced dimension, which takes less time to solve and less memory to store the matrix.

For example, the relation for the capacitive branch can be discretized using a Trapezoidal rule as:

C _(g)(v ₃ ^(t+Δ) −v ₃ ^(t))/Δ=(i ₃ ^(t+Δ) +i ₃ ^(t))/2

Thus,

v ₃ ^(t+Δ)−(v ₃ ^(t) +Δi ₃ ^(t)/2C _(g))=Δi ₃ ^(t+Δ)/2C _(g)

which can be rewritten as

v ₃ ^(t+Δ) −v _(x) =R _(x) i ₃ ^(t+Δ)

where R_(x)=Δ/2C_(g); and v_(x)=(v₃ ^(t)+R_(X)i₃ ^(t)).

Since Kirchoff's current law (KCL) at node 203 is:

i ₁ ^(t+Δ) +i ₂ ^(t+Δ) +i ₃ ^(t+Δ)=0

v₃ ^(t+Δ) can be solved for as:

v ₃ ^(t+Δ)=(v ₁ ^(t+Δ) /R ₁ +v ₂ ^(t+Δ) /R ₂ +v _(x) /R _(x))/(1/R ₁+1/R ₂+1/R _(x))

which can be rewritten as

v ₃ ^(t+Δ) =a ₃₁ v ₁ ^(t+Δ) +a ₃₂ v ₂ ^(t+Δ) +v _(x)*

where a₃₁=R*/R₁; a₃₂=R*/R₂; v_(x)*=R*(v₃ ^(t)/R_(x)+i₃ ^(t)); and R*=1/(1/R₁+1/R₂+1/R_(x)). Since R_(x)=Δ/2C_(g) which is not a function of node voltages, a₃₁ and a₃₂ are constants for a given time step size Δ.

If the equation system before the reduction is A_(n) V_(n) ^(t+Δ)=B_(n), where

{V_(n)^(t + Δ)}^(T) = {{v_(r)^(t + Δ)}^(T), v₃}; ${A_{n} = \begin{bmatrix} A_{rr} & A_{r\; 3} \\ A_{r\; 3}^{T} & A_{33} \end{bmatrix}};{and}$ B_(n)^(T) = {{B_(r)}^(T), B₃}.

Since v₃ ^(t+Δ)=a₃₁v₁ ^(t+Δ)+a₃₂V₂ ^(t+Δ)+v_(x)*, V_(n) ^(t+Δ) can be rewritten as:

V_(n)^(t + Δ) = Q{{V_(r)^(t + Δ)}^(T), v_(x)^(*)}^(T), where $Q = {\begin{bmatrix} Q_{rr} & 0 \\ 0 & 1 \end{bmatrix}.}$

Thus, the equation system can be reduced to

Q _(rr) ^(T) A _(rr) Q _(rr) V _(r) ^(t+Δ) =Q _(rr) ^(T) B _(r) −v _(x) *Q _(rr) ^(T) A _(r3)

which has a dimension smaller than that of the original system A_(n) V_(n) ^(t+Δ)=B_(n).

Although the capacitor 213 is connected to ground in the above example, the above approach can also be used when the capacitor 213 is connected to other known voltages, such as power.

Further, the relation v₃ ^(t+Δ)−v_(x)=R_(x)i₃ ^(t+Δ) is equivalent to a circuit in which the capacitive branch with the capacitor 213 is replaced with an equivalent resistor R_(x) that is connected to a known voltage v_(x). Thus, it is understood that the above approach can also be used to eliminate the common node where the common node is connected to two resistive branches and another resistive branch that is further connected to a know voltage.

Similarly, if the capacitor 213 is replaced with an inductor, the node 203 can be similarly eliminated. For example, if the inductive branch is connected to ground,

${L_{g}\frac{i_{3}}{t}} = v_{3}$

An integration scheme can be used to express v₃ ^(t+Δ) in terms of i₃ ^(t+Δ). For example, when a Trapezoidal rule is used,

v ₃ ^(t+Δ)+(v ₃ ^(t)+2L _(g) i ₃ ^(t)/Δ)=2L _(g) i ₃ ^(t+Δ)/Δ

which can be rewritten as

v ₃ ^(t+Δ) −v _(x) ′=R _(x) ′i ₃ ^(t+Δ)

where R_(x)′=2L_(g)/Δ; and v_(x)′=−(v₃ ^(t)+R_(x)i₃ ^(t)).

Thus, in general, when a node connects to two resistive branches and a third branch that is further connected to a known voltage, such as ground, power, etc., the node can be eliminated for the transient simulation according to one embodiment of the present invention.

FIG. 2 illustrates a method to reduce a string of nodes according to one embodiment of the present invention. In FIG. 2, a string of internal nodes 311, 312, . . . , 318 and 319 are connected from one to another through a series of resistors R₂, . . . , R_(n) and further connected to the interface nodes 301 and 302 through resistors R₁ and R_(n+1) respectively. Thus, resistors R₁, R₂, . . . , R_(n) and R_(n+1) form a serial connection. Each of the internal nodes 311, 312, . . . , 318 and 319 may be further connected to a know voltage, such as ground, power, etc. In FIG. 2, the branches 321, 322, . . . , 328 are connected to ground. However, in general, it is understood that branches 321, 322, . . . , 328 may be connected to different known voltages. Further, in general, some of the internal nodes 311, 312, . . . , 318 and 319 may have more than one branch connecting to one or more known voltages; and some of the internal nodes 311, 312, . . . , 318 and 319 may not have a branch connecting to a known voltages. However, none of the internal nodes has a branch connecting to a node with unknown voltage other than the internal nodes and the interface nodes 301 and 302. Further, the internal nodes may be connected to each other through other resistive branches but neither capacitive branch nor capacitive branch.

The discussion presented above shows that, in a transient simulation, a capacitive branch, or an inductive branch, that is connected to a known voltage can be equivalently represented as a resistive branch. Thus, branches 321, 322, . . . , 328 and 329 can be equivalently represented as resistive branches 331, 332, . . . , 338 and 339 through the calculation 300.

For example, for the computation of v₁ ^(t+Δ) and i₁ ^(t+Δ) for the capacitive branch 321 with a capacitor C₁, an equivalent resistor r₁ connected to known voltage v_(x1) can be used, where r₁=Δ/2C₁, which is half of the time step size divided by the value of the capacitor; and v_(x1)=(v₁ ^(t)+r₁i₁ ^(t)), which is a function of the known values at the previous time instance.

Similarly, for example, for the computation of the v_(n−1) ^(t+Δ) and i_(n−1) ^(t+Δ) for the inductive branch 328 with a capacitor L_(n−1), an equivalent resistor r_(n−1) connected to known voltage v_(xn-1) can be used, where r_(n−1)=2L_(n−1)/Δ, which is the value of the capacitor divided by half of the time step size; and v_(xn-1)=−(v_(n−1) ^(t)+r_(n−1)i_(n−1) ^(t)), which is a function of the known values at the previous time instance.

Note that when different discretization rules, such as Forward Euler, Backward Euler, Trapezoidal rules, etc., are used for the transient simulation of the capacitive branches and the inductive branches, different formulas for equivalent resistor values and voltage values may be generated.

Once the inductive branches and the capacitive branches, such as branches 321 and 328, are represented as equivalent resistive branches as illustrated in the FIG. 2, the sub-network 305 between the interface nodes 301 and 302 contains only resistive branches, connecting to either internal nodes of the sub-network or known voltages. Thus, the internal node voltages can be represented as the function of the node voltages of interface nodes 301 and 302 and the known voltages. Once the internal nodes are represented as in terms of the interface nodes 301 and 302 and the known voltages, the node voltage variables for the internal nodes can be eliminated; and the equation system for the entire RLC network can be reduced.

FIG. 3 illustrates a method to reduce a network of nodes according to one embodiment of the present invention. In FIG. 3, the sub-network 413 interfaces with the remaining part of the circuit 400, such as sub-networks 411 and 413, through interface nodes 401 and 402. Interface nodes 401 and 402 has unknown voltages that is to be solved from a transient simulation. The sub-network 413 has a number of branches connecting to known voltages, such as v_(p1), v_(p2), . . . v_(pm) illustrated in FIG. 3. The remaining part of the circuit, such as sub-networks 411 and 413, may or may not further connect to each other and may or may not connect to the known voltages v_(p1), v_(p2), . . . v_(pm).

The sub-network 413 may in general include capacitors, resistors and/or inductors. The sub-network 413 includes a set of internal nodes. Consider that portion of the circuit 400 that includes the sub-network 413, interface nodes 401 and 402, and known voltage nodes 421, 422, . . . , and 429. As described above, even when the portion of the circuit includes inductors, the simulation of this portion of the circuit can be represented as:

A _(s) V _(s) ^(t+Δ) =B _(s)

where A_(s) is symmetric and positive definite; and B_(s) contains only known quantities for the determination of the voltages at time instance t+Δ.

The nodes of this portion of circuit can be partitioned into interface nodes, internal nodes and known voltages nodes. Thus, the components of V_(s) ^(t+Δ) can be grouped as V_(x) ^(t+Δ) for the interface nodes, V_(e) ^(t+Δ) for the internal nodes, and V_(k) ^(t+Δ) for the known voltages nodes. Similarly, A_(s) and B_(s) can be partitioned for interface nodes, internal nodes and known voltages nodes.

Thus, A_(s) V_(s) ^(t+Δ)=B_(s) can be used to solve for V_(e) ^(t+Δ) in terms of V_(x) ^(t+Δ) and V_(k) ^(t+Δ). For example, if A_(s) is written as

$\begin{bmatrix} A_{ee} & A_{ex} & A_{ek} \\ A_{ex}^{T} & A_{xx} & A_{xk} \\ A_{ek}^{T} & A_{xk}^{T} & A_{kk} \end{bmatrix},{V_{s}^{t + \Delta}\mspace{14mu} {as}\mspace{14mu} \begin{Bmatrix} V_{e}^{t + \Delta} \\ V_{x}^{t + \Delta} \\ V_{k}^{t + \Delta} \end{Bmatrix}},$

and B_(s) as

$\begin{Bmatrix} B_{e} \\ B_{x} \\ B_{k} \end{Bmatrix},$

V_(e) ^(t+Δ) can be solve for as

V _(e) ^(t+Δ) =A _(ee) ⁻¹ [B _(e) −A _(ex) V _(x) ^(t+Δ) −A _(ek) V _(k) ^(t+Δ)]

Once the node voltages for the internal nodes are in terms of the node voltages of the interface nodes and known quantities, such as V_(k) ^(t+Δ), the variables for the node voltages for the internal nodes can be eliminated in a way similar to that in the above described examples.

In this example, the known voltages are not necessary constants. Further, in general, the set of interface nodes may include more than two nodes. When the internal nodes are eliminated in terms of more than two interfaces nodes which have unknown voltages to be solved in the simulation step, the elimination process generally introduces cross-relation between the interface nodes, which may introduces non-zero coefficients for the resulting matrix. For example, if there is no branch on both nodes p and q, the matrix A_(n) of the equation system is typically such that A_(pq)=A_(qp)=0. If internal nodes are eliminated in terms of voltages at nodes p and q, A_(pq)=A_(qp) typically becomes non-zero. Further, when the number of internal nodes is large, evaluation A_(ee) ⁻¹ can be time consuming. Thus, there is a tradeoff in selecting the sub-network for node reduction.

In one embodiment of the present invention, the sub-network is selected so that there are only two interface nodes. However, sub-networks with more than three interface nodes can also be selected for node reduction when the benefit of reduced dimension outweighs the additional non-zero coefficients. Further, when the sub-network has only one interface node, the node reduction can also be performed. Further, the sub-network may not have any branch connecting to known voltage nodes and may or may not have branches with known currents.

Thus, after creating a symmetric positive definite sparse matrix, one embodiment of the present invention applies a pre-conditioned conjugate gradient method to solve for the voltages and currents at each time instance. Such a method is faster than forming the equation system of a traditional method and using the direct method of solving the sparse matrix through Gaussian elimination or using an iterative method that can be applied to a sparse matrix which does not have the symmetric positive definite property.

The methods according to one embodiment of the present invention use less memory for large matrices, since there is no issue of fill-in of zero matrix entries into non-zero entries, which is encountered in Gaussian elimination.

Also the memory requirements are more predictable using the conjugate gradient method than Gaussian elimination where the number of fill-ins cannot be known precisely a priori.

Further, the methods according to one embodiment of the present invention can trade-off memory use for speed of execution, since the conjugate gradient solution method can be sped up by “pre-conditioning” the original matrix by another matrix which is an estimate of the original matrix's inverse. A good pre-conditioner reduces the solution time of the conjugate gradient method, although building the pre-conditioner can take up more memory. Therefore, transient simulation methods according to one embodiment of the present invention allow a way of trading off memory for runtime. On a computer with less memory, Gaussian elimination may simply not work for a large circuit. However, the conjugate gradient method may still be able to run even though it may be slower than if it had more memory.

FIGS. 4-7 shows flow charts of methods for transient simulation of a linear circuit according to some embodiments of the present invention.

In FIG. 4, operation 501 determines a linear equation system for transient simulation of the linear circuit that includes at least one inductive branch such that the linear transient simulation equation system is symmetric and positive definite. Operation 503 determines a known vector of the equation system from at least a representation of at least one inductive branch current at a previous time instance to solve for an unknown vector from the linear equation system. An example of a representation of branch currents is an integration of branch voltages for inductive branches. Operation 505 solves the linear equation system using a conjugate gradient method for the unknown vector from the known vector. Alternatively, other methods designed for a symmetric and positive definite equation system can also be used. When the inductive branch currents are observed, operation 507 optionally determines one or more inductive branch currents from an integration of a representation of voltages calculated from the linear equation system.

In FIG. 5, operation 521 determines a third node shared by a first resistive branch, a second resistive branch and a third branch, where the first resistive branch connects the third node to a first node, the second resistive branch connects the third node to a second node, and the third branch connects the third node to a known voltage. Operation 523 determines a first linear equation system for transient simulation of the linear circuit where the first linear equation system includes unknown variables representing the first and second nodes but no unknown variable representing the third node. In one embodiment of the present invention, the first linear equation system is symmetric and positive definite, even when the linear circuit contains one or more inductors. Thus, the linear equation system can be solved using a pre-conditioned conjugate gradient method. Operation 525 determines the unknown variables representing the first and second nodes from the first linear equation system. When the third node is observed, operation 527 optionally determines a voltage for the third node from the unknown variables representing the first and second nodes the first and second nodes.

In FIG. 5, operation 541 identifies a sub-network having: one or more internal nodes, one or more interface nodes, and branches connecting the one or more internal nodes and the one or more interface nodes, where the sub-network has at least one inductor or one capacitor. The sub-network may or may not contain branches connected to known voltages. Operation 543 determines a linear equation system for transient simulation of a linear circuit containing the sub-network where the linear equation system contains no variable representing the one or more internal nodes. The one or more internal nodes are eliminated in terms of the one or more interface nodes. In one embodiment of the present invention, sub-network has no more than two interface nodes; and the internal nodes are eliminated in terms of the no more than two interface nodes. When the internal nodes are observed, operation 545 optionally determines a representation of voltages at the one or more internal nodes of the sub-network from a representation of voltages at the one or more interface nodes.

In FIG. 7, operation 561 determines a plurality of matrices of linear equation systems for transient simulation of the linear circuit at a plurality of time step sizes respectively. In one embodiment of the present invention, the plurality of matrices are symmetric and positive definite; the plurality of matrices are pre-conditioned for used with a conjugate gradient method for solving unknowns of transient simulation. Operation 563 selects a first time step size from the plurality of time step sizes for a first simulation step in time. Operation 565 determines a representation of voltages for the linear circuit for the first simulation step using a first one of the plurality of matrices corresponding to the first time step size. Operation 567 selects a second time step size from the plurality of time step sizes for a second simulation step in time. Operation 569 determines a representation of voltages for the linear circuit for the second simulation step using a second one of the plurality of matrices corresponding to the second time step size. In one embodiment, the selection of the first and second time step sizes is according to the changes in a representation of changes in load currents.

Many of the methods of the present invention may be performed with a digital processing system, such as a conventional, general-purpose computer system. Special purpose computers, which are designed or programmed to perform only one function, may also be used.

FIG. 8 shows one example of a typical computer system which may be used with the present invention. Note that while FIG. 8 illustrates various components of a computer system, it is not intended to represent any particular architecture or manner of interconnecting the components as such details are not germane to the present invention. It will also be appreciated that network computers and other data processing systems which have fewer components or perhaps more components may also be used with the present invention. The computer system of FIG. 8 may, for example, be a Sun workstation, or a personal computer (PC) running a Windows operating system, or an Apple Macintosh computer.

As shown in FIG. 8, the computer system 101, which is a form of a data processing system, includes a bus 102 which is coupled to a microprocessor 103 and a ROM 107 and volatile RAM 105 and a non-volatile memory 106. The microprocessor 103 is coupled to cache memory 104 as shown in the example of FIG. 8. The bus 102 interconnects these various components together and also interconnects these components 103, 107, 105, and 106 to a display controller and display device 108 and to peripheral devices such as input/output (I/O) devices which may be mice, keyboards, modems, network interfaces, printers, scanners, video cameras and other devices which are well known in the art. Typically, the input/output devices 110 are coupled to the system through input/output controllers 109. The volatile RAM 105 is typically implemented as dynamic RAM (DRAM) which requires power continually in order to refresh or maintain the data in the memory. The non-volatile memory 106 is typically a magnetic hard drive or a magnetic optical drive or an optical drive or a DVD RAM or other type of memory systems which maintain data even after power is removed from the system. Typically, the non-volatile memory will also be a random access memory although this is not required. While FIG. 8 shows that the non-volatile memory is a local device coupled directly to the rest of the components in the data processing system, it will be appreciated that the present invention may utilize a non-volatile memory which is remote from the system, such as a network storage device which is coupled to the data processing system through a network interface such as a modem or Ethernet interface. The bus 102 may include one or more buses connected to each other through various bridges, controllers and/or adapters as is well known in the art. In one embodiment the I/O controller 109 includes a USB (Universal Serial Bus) adapter for controlling USB peripherals, and/or an IEEE-1394 bus adapter for controlling IEEE-1394 peripherals.

It will be apparent from this description that aspects of the present invention may be embodied, at least in part, in software. That is, the techniques may be carried out in a computer system or other data processing system in response to its processor, such as a microprocessor, executing sequences of instructions contained in a memory, such as ROM 107, volatile RAM 105, non-volatile memory 106, cache 104 or a remote storage device. In various embodiments, hardwired circuitry may be used in combination with software instructions to implement the present invention. Thus, the techniques are not limited to any specific combination of hardware circuitry and software nor to any particular source for the instructions executed by the data processing system. In addition, throughout this description, various functions and operations are described as being performed by or caused by software code to simplify description. However, those skilled in the art will recognize what is meant by such expressions is that the functions result from execution of the code by a processor, such as the microprocessor 103.

A machine readable medium can be used to store software and data which when executed by a data processing system causes the system to perform various methods of the present invention. This executable software and data may be stored in various places including for example ROM 107, volatile RAM 105, non-volatile memory 106 and/or cache 104 as shown in FIG. 8. Portions of this software and/or data may be stored in any one of these storage devices.

Thus, a machine readable medium includes any mechanism that provides (i.e., stores and/or transmits) information in a form accessible by a machine (e.g., a computer, network device, personal digital assistant, manufacturing tool, any device with a set of one or more processors, etc.). For example, a machine readable medium includes recordable/non-recordable media (e.g., read only memory (ROM); random access memory (RAM); magnetic disk storage media; optical storage media; flash memory devices; etc.), as well as electrical, optical, acoustical or other forms of propagated signals (e.g., carrier waves, infrared signals, digital signals, etc.); etc.

In the foregoing specification, the invention has been described with reference to specific exemplary embodiments thereof. It will be evident that various modifications may be made thereto without departing from the broader spirit and scope of the invention as set forth in the following claims. The specification and drawings are, accordingly, to be regarded in an illustrative sense rather than a restrictive sense. 

1. A non-transitory machine readable medium containing executable computer program instructions which when executed by a digital processing system cause said system to perform a method of transient simulation of a linear circuit, comprising: identifying a sub-network of the linear circuit, the sub-network having one or more internal nodes, one or more interface nodes, and branches connecting the one or more internal nodes and the one or more interface nodes, the sub-network having at least one of a capacitor and an inductor; and determining a linear equation system for transient simulation of the linear circuit, the linear equation system containing no variable representing the one or more internal nodes.
 2. The machine-readable medium of claim 1, wherein the sub-network has at least one branch connecting to a known voltage through one of a capacitor and an inductor.
 3. The machine-readable of claim 1, wherein the sub-network has no more than two interface nodes that have unknown voltages.
 4. The machine-readable of claim 1, further comprising: determining a representation of voltages at the one or more internal nodes of the sub-network from a representation of voltages at the one or more interface nodes.
 5. A method of transient simulation of a linear circuit, the method comprising: identifying a sub-network of the linear circuit, the sub-network having one or more internal nodes, one or more interface nodes, and branches connecting the one or more internal nodes and the one or more interface nodes, the sub-network having at least one of a capacitor and an inductor; and determining a linear equation system for transient simulation of the linear circuit, the linear equation system containing no variable representing the one or more internal nodes.
 6. The method of claim 5, wherein the sub-network has at least one branch connecting to a known voltage through one of a capacitor and an inductor.
 7. The method of claim 5, wherein the sub-network has no more than two interface nodes that have unknown voltages.
 8. The method of claim 5, further comprising: determining a representation of voltages at the one or more internal nodes of the sub-network from a representation of voltages at the one or more interface nodes.
 9. A data processing system for transient simulation of a linear circuit, the data processing system comprising: means for identifying a sub-network of the linear circuit, the sub-network having one or more internal nodes, one or more interface nodes, and branches connecting the one or more internal nodes and the one or more interface nodes, the sub-network having at least one of a capacitor and an inductor; and means for determining a linear equation system for transient simulation of the linear circuit, the linear equation system containing no variable representing the one or more internal nodes.
 10. The data processing system of claim 9, wherein the sub-network has at least one branch connecting to a known voltage through one of a capacitor and an inductor.
 11. The data processing system of claim 9, wherein the sub-network has no more than two interface nodes that have unknown voltages.
 12. The data processing system of claim 9, further comprising: means for determining a representation of voltages at the one or more internal nodes of the sub-network from a representation of voltages at the one or more interface nodes. 